package acwing.周赛;/**
 * @author： li
 * @date： 2022-04-02 20:37
 * @version 1.0
 */
/**
 1. 最长且连续子序列并且最多包含k个不同的值
 2. 使用Map 记录当不同元素的个数 <value, index>
 3. 先从头向右扩展, 一直扩展到k个不同元素位置 -> 更新答案
 4. 从左边弹出一个值, 然后重复3, 直到结束
 5. 注意坐标从1开始
 */
import java.util.*;

public class 最长连续子序列1 {
    static void run() {
        int n = jin.nextInt();
        int k = jin.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n ; i++) {
            a[i] = jin.nextInt();
        }

        int l = 0, r = 0;
        int start = 0, end = 0;
        Map<Integer, Integer> map = new HashMap<>();

        while (l <= r && r < n) {
            while (r < n && (map.size() < k || map.containsKey(a[r]))) {
                map.put(a[r], r);
                r++;
            }

            if (r-l-1 > end -start) {
                start = l;
                end = r-1;
            }

            while (map.size() >= k && l <= r) {
                if (l == map.get(a[l])) {
                    map.remove(a[l]);
                    l++;
                    break;
                } else {
                    l++;
                }
            }
        }

        System.out.printf("%d %d\n", start+1, end+1);
    }

    static Scanner jin = new Scanner(System.in);
    public static void main(String[] args) {run();}
}